package test

import "regexp"

// 自定义插件配置
// {
// "mockEnable":false,
// "traceEnable":true,
// "tokenHeader":"Authorization",
// "requestPath":"/token/to/user",
// "serviceName":"user-api-application",
// "servicePort":"8782",
// "requestPathAdmin":"/token/user",
// "serviceNameAdmin":"authentication-api-application",
// "servicePortAdmin":"8780",
// "namespace":"itbox-nacos-dev",
// "serviceSource":"nacos"
// }
type RouterConfig struct {

	// 是否开启mock
	MockEnable bool

	//是否开启trace
	TraceEnable bool

	//服务名称 user-api-application
	ServiceName string

	//服务端口  8780
	ServicePort string

	//服务名称 authentication-api-application
	ServiceNameAdmin string

	//服务端口  8780
	ServicePortAdmin string

	//配置C端鉴权服务 验证token路径
	RequestPath string

	//配置C端鉴权服务 验证token路径
	RequestPathAdmin string

	//是否增加tokenHeader
	TokenHeader string

	// 命名空间  itbox-nacos-dev
	Namespace string

	//服务来源
	ServiceSource string

	//全局开关
	GlobalClose bool

	//ip 列表
	IpFilter []PredicatesEntity

	//无需鉴权列表
	NoAuth []PredicatesEntity

	//后端鉴权接口
	AdminAuth []PredicatesEntity

	//C端鉴权接口
	ApiAuth []PredicatesEntity

	//签名验签接口
	SignAuth []PredicatesEntity
}

// 判断断言
type PredicatesEntity struct {
	Path    string `yaml:"path"`
	Pattern string `yaml:"pattern"`
	Uri     string `yaml:"uri"`
	Ip      string `yaml:"ip"`
	// appKey
	AppKey string `yaml:"appKey"`

	//公钥验签
	AppSecret string `yaml:"appSecret"`

	Regexp *regexp.Regexp
}

// 显式类型定义：
const PredicatesGlobal string = "global"

// APPKey 密钥信息
type AppSecretInfo struct {
	appSecret  string   `yaml:"appSecret"`
	uri        string   `yaml:"uri"`
	ignoreList []string `yaml:"ignoreList"`
}
